import { defineStore } from "pinia";
import router from "@/router/index";
import { RouteRecordRaw } from "vue-router";
// import { getMenuListAPI } from "@/api/modules/system/index";
import { moduleReplacement, linearArray } from "@/router/route-output";
/**
 * 路由列表
 * @methods setRouteNames 设置路由名称集合
 * @methods setTabs 添加tabs标签页
 * @methods setCurrentRoute 设置系统内的当前路由
 * @methods removeTabsList 删除tabs页的指定路由
 * @methods removeRouteName 删除缓存路由名，用于取消页面缓存，单个删除
 * @methods removeRouteNames 删除缓存路由名，用于取消页面缓存，批量删除
 * @methods initSetRouter 路由初始化
 */



export const useRoutesConfigStore = defineStore("route-config", {
  state: (): any => ({
    routeTree: [], // 有访问权限的路由树
    routeList: [], // 有访问权限的一维路由数组
    cacheRoutes: [], // 所有可缓存路由的路由名
    tabsList: [], // 标签页数据
    currentRoute: {} // 当前路由
  }),
  actions: {
    /**
     * 设置可缓存路由的路由名
     * @param {string} name 路由名
     */
    setRouteNames(name: string) {
      let state = this.cacheRoutes.some((item: string) => item === name);
      if (state) return;
      this.cacheRoutes.push(name);
    },
    /**
     * 添加tabs标签页
     * @param {object} data 当前tabs路由
     */
    setTabs(data: Menu.MenuOptions) {
      // 当前路由在tags中是否存在，不存在则缓存
      let isExist = this.tabsList.some((item: Menu.MenuOptions) => item.name === data.name);
      if (isExist) return;
      this.tabsList.push(data);
    },
    /**
     * 设置系统内的当前路由数据
     * @param {object} data 当前路由
     */
    setCurrentRoute(data: Menu.MenuOptions) {
      if (this.currentRoute.name && data.name === this.currentRoute.name) return;
      this.currentRoute = data;
    },
    /**
     * 删除tabs页的指定路由
     * @param {string} key 路由name
     */
    removeTabsList(key: string) {
      const index = this.tabsList.findIndex((item: Menu.MenuOptions) => item.name === key);
      if (this.tabsList[index].meta.affix) return;
      if (index === -1) return;
      this.tabsList.splice(index, 1);
    },
    /**
     * 删除缓存路由名，用于取消页面缓存，单个删除
     * @param {string} key 路由名
     */
    removeRouteName(key: string) {
      const index = this.cacheRoutes.findIndex((item: string) => item === key);
      if (index === -1) return;
      this.cacheRoutes.splice(index, 1);
    },
    /**
     * 删除缓存路由名，用于取消页面缓存，批量删除
     * @param {Array} list 路由名
     */
    removeRouteNames(list: Array<string>) {
      this.cacheRoutes = this.cacheRoutes.filter((item: string) => !list.includes(item));
    },
    /**
     * 重置routeTree路由树
     */
    async resetRoute() {
      this.routeTree = [];
    },
    /**
     * 路由初始化
     * 1、将模块设置为真实模块
     * 2、存储路由树，用于生成菜单
     * 3、根据树生成一维路由数组
     * 4、动态添加路由，设置完整的路由，二维路由：顶层路由 + 二级的一维路由
     * 5、动态添加路由
     * 6、缓存一维路由
     */
    async initSetRouter() {
      // 1、获取过滤角色权限后的树，后端做排序处理
      // let { data } = await getMenuListAPI();
      let data = [
        {
          "path": "/",
          "name": "/",
          "redirect": "/home",
          "component": "layout",
          "meta": {
            "keepAlive": true
          },
          "children": [
            {
              "path": "/home",
              "name": "home",
              "component": "home/home",
              "meta": {
                "title": "home",
                "hide": false,
                "disable": false,
                "keepAlive": false,
                "affix": true,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin",
                  "common"
                ],
                "svgIcon": "home",
                "sort": 1
              }
            },
            // {
            //     "path": "/file",
            //     "name": "file",
            //     "redirect": "/file/document-library",
            //     "meta": {
            //         "title": "file",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //             "admin"
            //         ],
            //         "svgIcon": "folder-menu",
            //         "sort": 2
            //     },
            //     "children": [
            //         {
            //             "path": "/file/document-library",
            //             "name": "document-library",
            //             "component": "file/document-library/document-library",
            //             "meta": {
            //                 "title": "document-library",
            //                 "hide": false,
            //                 "disable": false,
            //                 "keepAlive": true,
            //                 "affix": false,
            //                 "link": "",
            //                 "iframe": false,
            //                 "roles": [
            //                     "admin"
            //                 ],
            //                 "icon": "icon-menu",
            //                 "sort": 1
            //             }
            //         }
            //     ]
            // },
            {
              "path": "/qiye",
              "name": "qiye",
              "redirect": "/qiye/qiyeManage2",
              "meta": {
                "title": "qiye2",
                "hide": false,
                "disable": false,
                "keepAlive": false,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "set",
                "sort": 9
              },
              "children": [
                {
                  "path": "/qiye/qiyeManage2",
                  "name": "qiyeManage2",
                  "component": "qiye/qiyeManage2/index",
                  "meta": {
                    "title": "qiye2",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "qiye2",
                    "sort": 3
                  }
                },
                {
                  "path": "/qiye/qiyeManage",
                  "name": "qiyeManage",
                  "component": "qiye/qiyeManage/index",
                  "meta": {
                    "title": "qiye",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "qiyexiangq",
                    "sort": 3
                  }
                },

                {
                  "path": "/qiye/weixianList",
                  "name": "weixianList",
                  "component": "qiye/weixianList/index",
                  "meta": {
                    "title": "weixian",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "weixian",
                    "sort": 3
                  }
                },

                {
                  "path": "/qiye/weixianAdd",
                  "name": "weixianAdd",
                  "component": "qiye/weixianAdd/index",
                  "meta": {
                    "title": "weixian",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "weixian",
                    "sort": 3
                  }
                },
                {
                  "path": "/qiye/weixianDetails",
                  "name": "weixianDetails",
                  "component": "qiye/weixianDetails/index",
                  "meta": {
                    "title": "weixian",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "weixian",
                    "sort": 3
                  }
                },

                {
                  "path": "/qiye/qiyeDetail",
                  "name": "qiyeDetail",
                  "component": "qiye/qiyeDetail/index",
                  "meta": {
                    "title": "qiye",
                    "hide": true,
                    "disable": false,
                    "keepAlive": true,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },

                {
                  "path": "/qiye/qiyeAdd",
                  "name": "qiyeAdd",
                  "component": "qiye/qiyeAdd/index",
                  "meta": {
                    "title": "qiye",
                    "hide": true,
                    "disable": false,
                    "keepAlive": true,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },
              ]
            },
            {
              "path": "/project",
              "name": "project",
              "redirect": "/project/projectManage",
              "meta": {
                "title": "project",
                "hide": false,
                "disable": false,
                "keepAlive": false,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "set",
                "sort": 9
              },
              "children": [

                {
                  "path": "/project/projectManage",
                  "name": "projectManage",
                  "component": "project/projectManage/index",
                  "meta": {
                    "title": "project",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "dvice",
                    "sort": 3
                  }
                },
                {
                  "path": "/project/cgq",
                  "name": "cgq",
                  "component": "project/cgq/index",
                  "meta": {
                    "title": "cgq",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "cgq",
                    "sort": 3
                  }
                },
                {
                  "path": "/project/bjcon",
                  "name": "bjcon",
                  "component": "project/bjcon/index",
                  "meta": {
                    "title": "bjcon",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "bjcon",
                    "sort": 3
                  }
                },

                {
                  "path": "/project/cfqAdd",
                  "name": "cfqAdd",
                  "component": "project/cfqAdd/index",
                  "meta": {
                    "title": "cgq",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "cgq",
                    "sort": 3
                  }
                },
                {
                  "path": "/video/Alarmquery",
                  "name": "Alarmquery",
                  "redirect": "video/Alarmquery/index",
                  "meta": {
                    "title": "Alarmquery",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "notice",
                    "sort": 1
                  },
                  "children": [
                    {
                      "path": "/video/Alarmquery",
                      "name": "Alarmquery",
                      "component": "video/Alarmquery/index",
                      "meta": {
                        "title": "allAlarm",
                        "hide": false,
                        "disable": false,
                        "keepAlive": false,
                        "affix": false,
                        "link": "",
                        "iframe": false,
                        "roles": [
                          "admin"
                        ],
                        "icon": "",
                        "png": "notice",
                        "sort": 1
                      },
                    },
                    {
                      "path": "/video/ureadAlarm",
                      "name": "ureadAlarm",
                      "component": "video/ureadAlarm/index",
                      "meta": {
                        "title": "ureadAlarm",
                        "hide": false,
                        "disable": false,
                        "keepAlive": false,
                        "affix": false,
                        "link": "",
                        "iframe": false,
                        "roles": [
                          "admin"
                        ],
                        "icon": "",
                        "png": "daichulishijian",
                        "sort": 1
                      },
                    },
                    //daichulishijian
                  ]
                },
                {
                  "path": "/project/projectTab",
                  "name": "projectTab",
                  "component": "project/projectTab/index",
                  "meta": {
                    "title": "project",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },
                {
                  "path": "/project/projectDetail",
                  "name": "projectDetail",
                  "component": "project/projectDetail/index",
                  "meta": {
                    "title": "project",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },

                {
                  "path": "/project/projectAdd",
                  "name": "projectAdd",
                  "component": "project/projectAdd/index",
                  "meta": {
                    "title": "project",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },
              ]
            },
            // {
            //   "path": "/table",
            //   "name": "table",
            //   "redirect": "/table/common-table",
            //   "meta": {
            //     "title": "table",
            //     "hide": false,
            //     "disable": false,
            //     "keepAlive": true,
            //     "affix": false,
            //     "link": "",
            //     "iframe": false,
            //     "roles": [
            //       "admin"
            //     ],
            //     "svgIcon": "table",
            //     "sort": 3
            //   },
            //   "children": [
            //     {
            //       "path": "/table/common-table",
            //       "name": "common-table",
            //       "component": "table/common-table/common-table",
            //       "meta": {
            //         "title": "common-table",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 1
            //       }
            //     },
            //     {
            //       "path": "/table/custom-table",
            //       "name": "custom-table",
            //       "component": "table/custom-table/custom-table",
            //       "meta": {
            //         "title": "custom-table",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 2
            //       }
            //     }
            //   ]
            // },
            // {
            //   "path": "/form",
            //   "name": "form",
            //   "redirect": "/form/common-form",
            //   "meta": {
            //     "title": "form",
            //     "hide": false,
            //     "disable": false,
            //     "keepAlive": true,
            //     "affix": false,
            //     "link": "",
            //     "iframe": false,
            //     "roles": [
            //       "admin"
            //     ],
            //     "svgIcon": "form",
            //     "sort": 4
            //   },
            //   "children": [
            //     {
            //       "path": "/form/common-form",
            //       "name": "common-form",
            //       "component": "form/common-form/common-form",
            //       "meta": {
            //         "title": "common-form",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 1
            //       }
            //     },
            //     {
            //       "path": "/form/step-form",
            //       "name": "step-form",
            //       "component": "form/step-form/step-form",
            //       "meta": {
            //         "title": "step-form",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 2
            //       }
            //     }
            //   ]
            // },
            {
              "path": "/video",
              "name": "video",
              "redirect": "/video/screen",
              "meta": {
                "title": "video",
                "hide": false,
                "disable": false,
                "keepAlive": true,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "video",
                "sort": 4
              },
              "children": [
                // {
                //   "path": "/video/equipment",
                //   "name": "equipment",
                //   "component": "video/equipment/index",
                //   "meta": {
                //     "title": "equipment",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": false,
                //     "png": "guoji",
                //     "sort": 1
                //   }
                // },
                {
                  "path": "/video/screen",
                  "name": "screen",
                  "component": "video/screen/index",
                  "meta": {
                    "title": "screen",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "screen",
                    "sort": 1
                  }
                },
                // {
                //   "path": "/video/elemap",
                //   "name": "elemap",
                //   "component": "video/elemap/index",
                //   "meta": {
                //     "title": "elemap",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "",
                //     "png": "elemap",
                //     "sort": 1
                //   }
                // },
                // {
                //   "path": "/video/cloudrecording",
                //   "name": "cloudrecording",
                //   "component": "video/cloudrecording/index",
                //   "meta": {
                //     "title": "cloudrecording",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "",
                //     "png":"yunvidoe",
                //     "sort": 1
                //   }
                // },

                // {
                //   "path": "/video/Nationalstandardcascading",
                //   "name": "Nationalstandardcascading",
                //   "component": "video/Nationalstandardcascading/index",
                //   "meta": {
                //     "title": "Nationalstandardcascading",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "",
                //     "png":"guojil",
                //     "sort": 1
                //   }
                // },
                // {
                //   "path": "/video/basicconfiguration",
                //   "name": "basicconfiguration",
                //   "component": "video/basicconfiguration/index",
                //   "meta": {
                //     "title": "basicconfiguration",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "",
                //     "png":"basic",
                //     "sort": 1
                //   }
                // },

                {
                  "path": "/system/videoset",
                  "name": "videoset",
                  "component": "system/videoset/index",
                  "meta": {
                    "title": "videoset",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "videoset",
                    "sort": 5
                  }
                },
                {
                  "path": "/system/videopower",
                  "name": "videopower",
                  "component": "system/videopower/index",
                  "meta": {
                    "title": "videopower",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "userset",
                    "sort": 6
                  }
                },
              ]
            },
            // {
            //   "path": "/component",
            //   "name": "component",
            //   "redirect": "/component/player",
            //   "meta": {
            //     "title": "component",
            //     "hide": false,
            //     "disable": false,
            //     "keepAlive": true,
            //     "affix": false,
            //     "link": "",
            //     "iframe": false,
            //     "roles": [
            //       "admin"
            //     ],
            //     "svgIcon": "classify",
            //     "sort": 6
            //   },
            //   "children": [
            //     {
            //       "path": "/component/player",
            //       "name": "player",
            //       "component": "component/player/player",
            //       "meta": {
            //         "title": "player",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 1
            //       }
            //     },
            //     {
            //       "path": "/component/print",
            //       "name": "print",
            //       "component": "component/print/print",
            //       "meta": {
            //         "title": "print",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 2
            //       }
            //     },
            //     {
            //       "path": "/component/draggable",
            //       "name": "draggable",
            //       "component": "component/draggable/draggable",
            //       "meta": {
            //         "title": "draggable",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 3
            //       }
            //     },
            //     {
            //       "path": "/component/editor",
            //       "name": "editor",
            //       "component": "component/editor/editor",
            //       "meta": {
            //         "title": "editor",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 4
            //       }
            //     },
            //     {
            //       "path": "/component/newbie",
            //       "name": "newbie",
            //       "component": "component/newbie/newbie",
            //       "meta": {
            //         "title": "newbie",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 5
            //       }
            //     },
            //     {
            //       "path": "/component/icon-selector",
            //       "name": "icon-selector",
            //       "component": "component/icon-selector/icon-selector",
            //       "meta": {
            //         "title": "icon-selector",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 6
            //       }
            //     },
            //     {
            //       "path": "/component/user-center",
            //       "name": "user-center",
            //       "component": "component/user-center/user-center",
            //       "meta": {
            //         "title": "user-center",
            //         "hide": true,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 7
            //       }
            //     }
            //   ]
            // },
            // {
            //   "path": "/directive",
            //   "name": "directive",
            //   "redirect": "/directive/anti-shake",
            //   "meta": {
            //     "title": "directive",
            //     "hide": false,
            //     "disable": false,
            //     "keepAlive": true,
            //     "affix": false,
            //     "link": "",
            //     "iframe": false,
            //     "roles": [
            //       "admin"
            //     ],
            //     "svgIcon": "directives",
            //     "sort": 7
            //   },
            //   "children": [
            //     {
            //       "path": "/directive/anti-shake",
            //       "name": "anti-shake",
            //       "component": "directive/anti-shake/anti-shake",
            //       "meta": {
            //         "title": "anti-shake",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 1
            //       }
            //     },
            //     {
            //       "path": "/directive/throttle",
            //       "name": "throttle",
            //       "component": "directive/throttle/throttle",
            //       "meta": {
            //         "title": "throttle",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 2
            //       }
            //     },
            //     {
            //       "path": "/directive/test-directive",
            //       "name": "test-directive",
            //       "component": "directive/test-directive/test-directive",
            //       "meta": {
            //         "title": "test-directive",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 3
            //       }
            //     }
            //   ]
            // },
            {
              "path": "/personal",
              "name": "personal",
              "redirect": "/personal/userinfo",
              "meta": {
                "title": "personal",
                "hide": true,
                "disable": false,
                "keepAlive": false,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "user",
                "sort": 8
              },
              "children": [
                {
                  "path": "/personal/userinfo",
                  "name": "userinfo",
                  "component": "personal/userinfo/userinfo",
                  "meta": {
                    "title": "userinfo",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "user2",
                    "sort": 1
                  }
                },
                {
                  "path": "/personal/user-settings",
                  "name": "user-settings",
                  "component": "personal/user-settings/user-settings",
                  "meta": {
                    "title": "user-settings",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "userset",
                    "sort": 2
                  }
                }
              ]
            },
            {
              "path": "/jiankCenter",
              "name": "jiankCenter",
              "redirect": "/jiankCenter/sbjk",
              "meta": {
                "title": "jiankCenter",
                "hide": false,
                "disable": false,
                "keepAlive": false,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "set",
                "sort": 9
              },
              "children": [
                {
                  "path": "/jiankCenter/sbjk",
                  "name": "sbjk",
                  "component": "jiankCenter/sbjk/index",
                  "meta": {
                    "title": "sbjk",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "jiank",
                    "sort": 1
                  }
                },
                {
                  "path": "/jiankCenter/sbjkDetail",
                  "name": "sbjkDetail",
                  "component": "jiankCenter/sbjkDetail/index",
                  "meta": {
                    "title": "sbjk",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "jiank",
                    "sort": 1
                  }
                },
                // {

              ]
            },
            {
              "path": "/system",
              "name": "system",
              "redirect": "/system/icon",
              "meta": {
                "title": "system",
                "hide": false,
                "disable": false,
                "keepAlive": false,
                "affix": false,
                "link": "",
                "iframe": false,
                "roles": [
                  "admin"
                ],
                "svgIcon": "set",
                "sort": 9
              },
              "children": [
                {
                  "path": "/system/icon",
                  "name": "icon",
                  "component": "system/icon/index",
                  "meta": {
                    "title": "icon",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "tubiao",
                    "sort": 1
                  }
                },
                {
                  "path": "/system/fuwuCount",
                  "name": "fuwuCount",
                  "component": "system/fuwuCount/index",
                  "meta": {
                    "title": "fuwuCount",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "fuwuCount",
                    "sort": 1
                  }
                },
                {
                  "path": "/system/lpmgl",
                  "name": "lpmgl",
                  "component": "system/lpmgl/index",
                  "meta": {
                    "title": "lpmgl",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "lpm",
                    "sort": 1
                  }
                },
                {
                  "path": "/system/fuwudetail",
                  "name": "fuwudetail",
                  "component": "system/fuwudetail/index",
                  "meta": {
                    "title": "fuwudetail",
                    "hide": true,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "fuwuCount",
                    "sort": 1
                  }
                },
                // {
                //   "path": "/system/account",
                //   "name": "account",
                //   "component": "system/account/account",
                //   "meta": {
                //     "title": "account",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "icon-menu",
                //     "sort": 1
                //   }
                // },
                // {
                //   "path": "/system/role",
                //   "name": "role",
                //   "component": "system/role/role",
                //   "meta": {
                //     "title": "role",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": true,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "icon-menu",
                //     "sort": 2
                //   }
                // },
                // {
                //   "path": "/system/menu",
                //   "name": "menu",
                //   "component": "system/menu/menu",
                //   "meta": {
                //     "title": "menu",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": true,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "icon-menu",
                //     "sort": 3
                //   }
                // },
                // {
                //   "path": "/system/division",
                //   "name": "division",
                //   "component": "system/division/division",
                //   "meta": {
                //     "title": "division",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": true,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "icon-menu",
                //     "sort": 4
                //   }
                // },
                // {
                //   "path": "/system/dictionary",
                //   "name": "dictionary",
                //   "component": "system/dictionary/dictionary",
                //   "meta": {
                //     "title": "dictionary",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": false,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "",
                //     "png":"zidian",
                //     "sort": 5
                //   }
                // },
                {
                  "path": "/system/userM",
                  "name": "userM",
                  "component": "system/userM/index",
                  "meta": {
                    "title": "usersetgl",
                    "hide": false,
                    "disable": false,
                    "keepAlive": false,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "",
                    "png": "usersetgl",
                    "sort": 5
                  }
                },
                {
                  "path": "/system/menu",
                  "name": "menu",
                  "component": "system/menu/menu",
                  "meta": {
                    "title": "menu",
                    "hide": false,
                    "disable": false,
                    "keepAlive": true,
                    "affix": false,
                    "link": "",
                    "iframe": false,
                    "roles": [
                      "admin"
                    ],
                    "icon": "icon-menu",
                    "sort": 3
                  }
                },
                // {
                //   "path": "/system/log",
                //   "name": "log",
                //   "component": "system/log/log",
                //   "meta": {
                //     "title": "log",
                //     "hide": false,
                //     "disable": false,
                //     "keepAlive": true,
                //     "affix": false,
                //     "link": "",
                //     "iframe": false,
                //     "roles": [
                //       "admin"
                //     ],
                //     "icon": "icon-menu",
                //     "sort": 6
                //   }
                // }
              ]
            },
            // {
            //   "path": "/link",
            //   "name": "link",
            //   "redirect": "/link/internal",
            //   "meta": {
            //     "title": "link",
            //     "hide": false,
            //     "disable": false,
            //     "keepAlive": true,
            //     "affix": false,
            //     "link": "",
            //     "iframe": false,
            //     "roles": [
            //       "admin"
            //     ],
            //     "svgIcon": "link",
            //     "sort": 10
            //   },
            //   "children": [
            //     {
            //       "path": "/link/internal",
            //       "name": "internal",
            //       "redirect": "/link/internal/uigradients",
            //       "meta": {
            //         "title": "internal",
            //         "hide": false,
            //         "disable": false,
            //         "keepAlive": true,
            //         "affix": false,
            //         "link": "",
            //         "iframe": false,
            //         "roles": [
            //           "admin"
            //         ],
            //         "icon": "icon-menu",
            //         "sort": 1
            //       },
            //       "children": [
            //         {
            //           "path": "/link/internal/uigradients",
            //           "name": "uigradients",
            //           "component": "link/internal/internal",
            //           "meta": {
            //             "title": "uigradients",
            //             "hide": false,
            //             "keepAlive": true,
            //             "disable": false,
            //             "affix": false,
            //             "link": "https://uigradients.com/#HoneyDew",
            //             "iframe": true,
            //             "roles": [
            //               "admin"
            //             ],
            //             "icon": "icon-menu",
            //             "sort": 1
            //           }
            //         },
            //         {
            //           "path": "/link/internal/color-taking-tool",
            //           "name": "color-taking-tool",
            //           "component": "link/internal/internal",
            //           "meta": {
            //             "title": "color-taking-tool",
            //             "hide": false,
            //             "disable": false,
            //             "keepAlive": true,
            //             "affix": false,
            //             "link": "https://photokit.com/colors/eyedropper/?lang=zh",
            //             "iframe": true,
            //             "roles": [
            //               "admin"
            //             ],
            //             "icon": "icon-menu",
            //             "sort": 2
            //           }
            //         },
            //         {
            //           "path": "/link/internal/grid-generator",
            //           "name": "grid-generator",
            //           "component": "link/internal/internal",
            //           "meta": {
            //             "title": "grid-generator",
            //             "hide": false,
            //             "disable": false,
            //             "keepAlive": true,
            //             "affix": false,
            //             "link": "https://cssgrid-generator.netlify.app/",
            //             "iframe": true,
            //             "roles": [
            //               "admin"
            //             ],
            //             "icon": "icon-menu",
            //             "sort": 3
            //           }
            //         }
            //       ]
            //     },
            //     // {
            //     //   "path": "/link/external",
            //     //   "name": "external",
            //     //   "redirect": "/link/external/link-vue",
            //     //   "meta": {
            //     //     "title": "external",
            //     //     "hide": false,
            //     //     "disable": false,
            //     //     "keepAlive": true,
            //     //     "affix": false,
            //     //     "link": "",
            //     //     "iframe": false,
            //     //     "roles": [
            //     //       "admin"
            //     //     ],
            //     //     "icon": "icon-menu",
            //     //     "sort": 2
            //     //   },
            //     //   "children": [
            //     //     {
            //     //       "path": "/link/external/vue",
            //     //       "name": "vue",
            //     //       "component": "link/external/external",
            //     //       "meta": {
            //     //         "title": "vue",
            //     //         "hide": false,
            //     //         "disable": false,
            //     //         "keepAlive": true,
            //     //         "affix": false,
            //     //         "link": "https://cn.vuejs.org/",
            //     //         "iframe": false,
            //     //         "roles": [
            //     //           "admin"
            //     //         ],
            //     //         "icon": "icon-menu",
            //     //         "sort": 1
            //     //       }
            //     //     },
            //     //     {
            //     //       "path": "/link/external/vite",
            //     //       "name": "vite",
            //     //       "component": "link/external/external",
            //     //       "meta": {
            //     //         "title": "vite",
            //     //         "hide": false,
            //     //         "disable": false,
            //     //         "keepAlive": true,
            //     //         "affix": false,
            //     //         "link": "https://www.vitejs.net/",
            //     //         "iframe": false,
            //     //         "roles": [
            //     //           "admin"
            //     //         ],
            //     //         "icon": "icon-menu",
            //     //         "sort": 2
            //     //       }
            //     //     },
            //     //     {
            //     //       "path": "/link/external/juejin",
            //     //       "name": "juejin",
            //     //       "component": "link/external/external",
            //     //       "meta": {
            //     //         "title": "juejin",
            //     //         "hide": false,
            //     //         "disable": false,
            //     //         "keepAlive": true,
            //     //         "affix": false,
            //     //         "link": "https://juejin.cn/user/1728883023940600",
            //     //         "iframe": false,
            //     //         "roles": [
            //     //           "admin"
            //     //         ],
            //     //         "icon": "icon-menu",
            //     //         "sort": 4
            //     //       }
            //     //     },
            //     //     {
            //     //       "path": "/link/external/SnowAdmin-Docs",
            //     //       "name": "SnowAdmin-Docs",
            //     //       "component": "link/external/external",
            //     //       "meta": {
            //     //         "title": "SnowAdmin-Docs",
            //     //         "hide": false,
            //     //         "disable": false,
            //     //         "keepAlive": true,
            //     //         "affix": false,
            //     //         "link": "http://101.126.93.137:81/",
            //     //         "iframe": false,
            //     //         "roles": [
            //     //           "admin"
            //     //         ],
            //     //         "icon": "icon-menu",
            //     //         "sort": 5
            //     //       }
            //     //     }
            //     //   ]
            //     // }
            //   ]
            // },

          ]
        }
      ]
      // 2、将模块设置为真实模块
      let tree = moduleReplacement(data);
      // 3、存储路由树，用于生成菜单
      this.routeTree = tree[0].children;
      // 4、根据树生成一维路由数组            
      tree[0].children = linearArray(tree[0].children);
      // 5、设置完整的路由，二维路由：顶层路由 + 二级的一维路由
      tree[0].redirect = tree[0].children[0].path;
      // 6、动态添加路由
      tree.forEach((route: RouteRecordRaw) => router.addRoute(route));
      // 7、缓存一维路由
      this.routeList = tree[0].children;
    }
  }
});
